const path = require('path');
function resolve(dir) {
    return path.join(__dirname, dir);
}

module.exports = {
    publicPath: './',
    /** devServer
     *
     * 用于设置开发环境的服务，这里表示在本地8080端口启动web服务。
     */
    devServer: {
        host: '0.0.0.0',
        port: 8090,
    },
    /** 第三方插件选项
     *
     */
    pluginOptions: {
        electronBuilder: {
            nodeIntegration: true, // 渲染进程可以使用node模块
            builderOptions: {
                asar: false, // 设置asar:false，打包，进入打包的绿色安装包
                productName: `${process.env.VUE_ProductName}`, // 项目名,这也是生成的exe文件的前缀名
                appId: 'magical.mind.map', // 应用程序id
                copyright: 'WeiZhe © magical', // 应用程序版权行
                directories: {
                    output: 'dist_electron', // 打包输出的目录，相对于项目根路径
                },
                win: {
                    legalTrademarks: 'WeiZhe © magical', // 商标注册
                    publisherName: 'MagicalMindMap', // 发行者名称，与代码签名证书中的名称完全相同
                    requestedExecutionLevel: 'highestAvailable', // 应用程序请求执行的安全级别。
                    target: [
                        {
                            target: 'nsis', // 目标包类型
                            arch: ['ia32'], // 属于X86体系结bai构的du32位版本
                        },
                    ],
                    // 没有配置 nsis 的时候的安装包名，此配置项会被 nsis 覆盖
                    // artifactName: `${config.productName}.exe`,
                    icon: './public/app.ico', // 图标路径，安装包和免安装程序都会应用
                },
                mac: {
                    identity: 'com.electron.templat',
                    target: ['dmg'],
                    // artifactName: `${config.productName}.dmg`,
                    icon: './public/app.png',
                },
                dmg: {
                    title: `${process.env.VUE_ProductName}`,
                    // artifactName: `${config.productName}.dmg`,
                    icon: './public/app.png',
                },
                nsis: {
                    // 创建一键安装程序还是辅助安装程序
                    oneClick: false,
                    // 是否允许用户更改安装目录。
                    allowToChangeInstallationDirectory: true,
                    // 是否为辅助安装程序显示安装模式安装程序页(选择每台计算机或每用户)。或者是否总是按所有用户(每台机器)安装
                    perMachine: true,
                    // 允许申请提升。如果为false，用户将不得不以提升的权限重启安装程序
                    allowElevation: true,
                    // 打出的安装包名称，默认 ${productName} Setup ${version}.${ext}，${productName} 对应productName 或 package.json 中的name， ${version}对应 package.json 中的 version
                    artifactName: `${process.env.VUE_ProductName}-安装包-V${process.env.VUE_Version}.exe`,
                    // 完成后是否运行已安装的应用程序。对于辅助安装程序，相应的复选框将被删除
                    runAfterFinish: true,
                    // 用于所有快捷方式的名称。默认为应用程序名称，即 productName 的值，如果 productName 没有设置，则默认是 package.json 中的 name，如果name 也没有设置，将报错
                    shortcutName: `${process.env.VUE_ProductName}`,
                },
            },
        },
    },
    /** chainWebpack
     *
     * 我们给项目目录起了“别名(alias)”，
     * 在代码中，我们可以直接用“别名”访问资源，省去了每次输入完整相对路径的麻烦
     * 在js代码中可直接使用别名，例如：
     * @/common/js/xxx.js 等价于 src/common/js/xxx.js
     * common/js/xxx.js 等价于 src/common/js/xxx.
     * 在css或者html中使用别名，需要在别名前加“~”，例如：
     * @import "~common/stylus/font.styl";
     */
    chainWebpack: config => {
        config.resolve.alias
            .set('@', resolve('src'))
            .set('src', resolve('src'))
            .set('common', resolve('src/common'))
            .set('components', resolve('src/components'));
    },
};
